import UIKit

@available(iOS 2.0, *)
extension QKC where AA :UIDatePicker {
		// default is UIDatePickerModeDateAndTime
    open func datePickerMode_qk_s(_ datePickerMode:  UIDatePicker.Mode ) -> QKC<AA,YY,ZZ, UIDatePicker.Mode >{
		return link(next: datePickerMode).then_QK { $0.value.datePickerMode = datePickerMode }
	}
    open func datePickerMode_qk_g() -> QKC<AA,YY,ZZ, UIDatePicker.Mode >{
		 self +^ self.value.datePickerMode
	}

		// default is [NSLocale currentLocale]. setting nil returns to default
    open func locale_qk_s(_ locale:  Locale? ) -> QKC<AA,YY,ZZ, Locale? >{
		return link(next: locale).then_QK { $0.value.locale = locale }
	}
    open func locale_qk_g() -> QKC<AA,YY,ZZ, Locale? >{
		 self +^ self.value.locale
	}

		// default is [NSCalendar currentCalendar]. setting nil returns to default
    open func calendar_qk_s(_ calendar:  Calendar ) -> QKC<AA,YY,ZZ, Calendar >{
		return link(next: calendar).then_QK { $0.value.calendar = calendar }
	}
    open func calendar_qk_g() -> QKC<AA,YY,ZZ, Calendar >{
		 self +^ self.value.calendar
	}

		// default is nil. use current time zone or time zone from calendar
    open func timeZone_qk_s(_ timeZone:  TimeZone? ) -> QKC<AA,YY,ZZ, TimeZone? >{
		return link(next: timeZone).then_QK { $0.value.timeZone = timeZone }
	}
    open func timeZone_qk_g() -> QKC<AA,YY,ZZ, TimeZone? >{
		 self +^ self.value.timeZone
	}

		// default is current date when picker created. Ignored in countdown timer mode. for that mode, picker starts at 0:00
    open func date_qk_s(_ date:  Date ) -> QKC<AA,YY,ZZ, Date >{
		return link(next: date).then_QK { $0.value.date = date }
	}
    open func date_qk_g() -> QKC<AA,YY,ZZ, Date >{
		 self +^ self.value.date
	}

		// specify min/max date range. default is nil. When min > max, the values are ignored. Ignored in countdown timer mode
    open func minimumDate_qk_s(_ minimumDate:  Date? ) -> QKC<AA,YY,ZZ, Date? >{
		return link(next: minimumDate).then_QK { $0.value.minimumDate = minimumDate }
	}
    open func minimumDate_qk_g() -> QKC<AA,YY,ZZ, Date? >{
		 self +^ self.value.minimumDate
	}

		// default is nil
    open func maximumDate_qk_s(_ maximumDate:  Date? ) -> QKC<AA,YY,ZZ, Date? >{
		return link(next: maximumDate).then_QK { $0.value.maximumDate = maximumDate }
	}
    open func maximumDate_qk_g() -> QKC<AA,YY,ZZ, Date? >{
		 self +^ self.value.maximumDate
	}

		// for UIDatePickerModeCountDownTimer, ignored otherwise. default is 0.0. limit is 23:59 (86,399 seconds). value being set is div 60 (drops remaining seconds).
    open func countDownDuration_qk_s(_ countDownDuration:  TimeInterval ) -> QKC<AA,YY,ZZ, TimeInterval >{
		return link(next: countDownDuration).then_QK { $0.value.countDownDuration = countDownDuration }
	}
    open func countDownDuration_qk_g() -> QKC<AA,YY,ZZ, TimeInterval >{
		 self +^ self.value.countDownDuration
	}

		// display minutes wheel with interval. interval must be evenly divided into 60. default is 1. min is 1, max is 30
    open func minuteInterval_qk_s(_ minuteInterval:  Int ) -> QKC<AA,YY,ZZ, Int >{
		return link(next: minuteInterval).then_QK { $0.value.minuteInterval = minuteInterval }
	}
    open func minuteInterval_qk_g() -> QKC<AA,YY,ZZ, Int >{
		 self +^ self.value.minuteInterval
	}

	/// Request a style for the date picker. If the style changed, then the date picker may need to be resized and will generate a layout pass to display correctly.
    @available(iOS 13.4, *)
    open func preferredDatePickerStyle_qk_s(_ preferredDatePickerStyle:  UIDatePickerStyle) -> QKC<AA,YY,ZZ, UIDatePickerStyle>{
		return link(next: preferredDatePickerStyle).then_QK { $0.value.preferredDatePickerStyle = preferredDatePickerStyle }
	}
    @available(iOS 13.4, *)
    open func preferredDatePickerStyle_qk_g() -> QKC<AA,YY,ZZ, UIDatePickerStyle>{
		 self +^ self.value.preferredDatePickerStyle
	}

	/// The style that the date picker is using for its layout. This property always returns a concrete style (never automatic).
    @available(iOS 13.4, *)
    open func datePickerStyle_qk_g() -> QKC<AA,YY,ZZ, UIDatePickerStyle >{
		 self +^ self.value.datePickerStyle
	}

		// if animated is YES, animate the wheels of time to display the new date
    open func setDate_qk_f(_ date: Date, animated: Bool) -> QKC<AA,YY,ZZ, Date>{
		 self +^ self.value.setDate(date, animated:animated) +^ date
	}

}

